package com.capgemini.cn.authority.rest.service;

import com.capgemini.cn.authority.rest.exception.AuthRestBusinessException;
import com.capgemini.cn.authority.rest.valueobject.DataResponse;
import com.capgemini.cn.authority.rest.valueobject.data.GroupMemberVO;

import java.util.List;

/**
 * Created at 2017/9/19
 *
 * @author Andriy
 */
public interface GroupMemberService extends CommonService<GroupMemberVO> {

    /**
     * 根据用户组查询其所属的成员数据信息
     *
     * @param groupId 用户组主键ID值
     * @return 包装成{@link DataResponse}对象返回对应的实体对象数据
     */
    DataResponse<List<GroupMemberVO>> findMemberByGroup(Long groupId) throws AuthRestBusinessException;

    /**
     * 绑定用户到指定用户组
     *
     * @param username 用户名，通常是业务系统中用户的唯一标识
     * @param groupId  用户组主键ID值
     */
    DataResponse<GroupMemberVO> bind(String username, long groupId) throws AuthRestBusinessException;

    /**
     * 绑定用户到指定用户组
     *
     * @param groupId  用户组主键ID值
     * @param username 用户名，通常是业务系统中用户的唯一标识
     */
    DataResponse<List<GroupMemberVO>> bind(long groupId, String... username) throws AuthRestBusinessException;
}
